#ifndef __FUNC_H__
#define __FUNC_H__

#include <stdio.h>
#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>
#include <netinet/in.h>  /*信息结构体*/
#include <arpa/inet.h>   /*字节序函数头文件*/
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h> 
#include <arpa/inet.h>  
#include <strings.h>
#include <string.h>
#include <linux/socket.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <fcntl.h>

//套接字
int sfd;
#define PORT 8888
#define IP  "192.168.1.10"

//错误信息宏	
#define ERR_MSG(msg) do{\
	fprintf(stderr,"line:__%d__\n",__LINE__);\
	perror(msg);\
}while(0) 

//应用层与三个驱动模块通信的协议
//[设置] 指定GPIO引脚的值	需要 [cmd和whitch]协同判断	即两层Switch
#define GPIO_ON _IOW('a',0,int)
#define GPIO_OFF _IOW('a',1,int)
//[取反] 指定GPIO引脚的值 	只需要 [cmd]
#define LED1_L _IOW('a',11,int)
#define LED2_L _IOW('a',9,int)
#define LED3_L _IOW('a',10,int)
#define FAN_L _IOW('a',2,int)
#define BUZ_L _IOW('a',3,int)
#define MOT_L _IOW('a',4,int)

//在iic中获取温湿度
#define TEMP_L _IOW('a',5,int)
#define HUM_L _IOW('a',6,int)
//在spi中显示数码管
#define SPI_L _IOW('a',7,int)
enum {
	posi,  	//占位		0
	LED1,	//LED1		1
	LED2,	//LED2		2
	LED3,	//LED3		3	
	FAN,	//风扇		4
	BUZ,	//蜂鸣器	5
	MOT,	//马达		6
	TEMP,	//温湿度	7
	AUTO,	//自动		8
	HAND,	//手动		9
};
//定义文件描述符结构体
struct fd{
	int fd1;		//控制灯、风扇、蜂鸣器、马达
	int fd2;		//控制温湿度
	int fd3;		//控制数码管
	int newfd;
};


//TCP通信协议
int ubuntu_socket_create();
#endif